home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -in_the_mag- / pdselect / ispell_yam / rexx / ispell_all.rexx next >
OS/2 REXX Batch file  |  2000-03-08  |  6KB  |  165 lines

  1. /*-------------------------------------------------------------------------------------------------
  2.  
  3.    iSpell_all.rexx 1.97
  4.  
  5.    Brecht Machiels <darklite@flashmail.com>
  6.    Lorens Johansson <SnorsleX@Home.se>
  7.    Roger 'Ben' Bennett <bennett@ntl.net.com>
  8.  
  9. ---------------------------------------------------------------------------------------------------
  10.  
  11. $VER: iSpell_all v1.97
  12. $AUTHOR: Copyright © 1999 Brecht Machiels, Lorens Johansson, Roger 'Ben' Bennett
  13. $DESCRIPTION: Simple interface for YAM & iSpell
  14.  
  15. --> OPTIONS <------------------------------------------------------------------------------------*/
  16.  
  17. BINPATH = "iSpell:bin/"
  18.  
  19. /*-----------------------------------------------------------------------------------------------*/
  20.  
  21. OPTIONS RESULTS
  22.  
  23. a = OPEN('envvar', 'ENV:ISPELLYAM', 'R')
  24. IF a = 0 THEN DO
  25.   ADDRESS 'AREXX' 'YAM:Rexx/iSpell_lang'
  26.   DO UNTIL a = 1
  27.     a = OPEN('envvar', 'ENV:ISPELLYAM', 'R')
  28.    END
  29.  END
  30. language = READLN('envvar')
  31. CLOSE('envvar')
  32.  
  33. IF SHOW('P', 'IRexxSpell') THEN DO
  34.   a = OPEN('currentlang', 'ENV:ISPELLMR', 'R')
  35.   IF a = 0 THEN DO
  36.     ADDRESS 'IRexxSpell' 'EXIT'
  37.     EXIT
  38.    END
  39.   IF language ~= READLN('currentlang') THEN DO
  40.     ADDRESS 'IRexxSpell' 'EXIT'
  41.     PRAGMA('S', 10240)
  42.     ADDRESS 'COMMAND' 'run <nil: >nil: 'BINPATH'iSpell -d'language' -r >nil: <nil:'
  43.     ADDRESS 'COMMAND' 'waitforport IRexxSpell'
  44.    END
  45.   CLOSE('currentlang')
  46.  END
  47. ELSE DO
  48.   PRAGMA('S', 10240)
  49.   ADDRESS 'COMMAND' 'run <nil: >nil: 'BINPATH'iSpell -d'language' -r >nil: <nil:'
  50.   ADDRESS 'COMMAND' 'waitforport IRexxSpell'
  51.   ADDRESS 'COMMAND' 'setenv ISPELLMR 'language
  52.  END
  53.  
  54. ADDRESS 'YAM' 'WRITEEDITOR "'POSITION sof'"'
  55.  
  56. prev = 'zzz'
  57. check = 'vvv'
  58.  
  59. DO FOREVER
  60.   prev = check
  61.   ADDRESS 'YAM' 'WRITEEDITOR "'GETCURSOR column'"'
  62.   wordpos = result + 1
  63.   ADDRESS 'YAM' 'WRITEEDITOR GETLINE'
  64.   line = result
  65.  
  66.   IF POS(' ', SUBSTR(line, wordpos)) ~= 0 THEN
  67.     check = SUBSTR(line, wordpos, POS(' ', SUBSTR(line, wordpos)))
  68.   ELSE check = STRIP(SUBSTR(line, wordpos), 'T', '0a'X)
  69.   check = STRIP(STRIP(check), 'B', '.,;:"''[]{}()<>?!')
  70.   IF check = '' THEN LEAVE
  71.  
  72.   SELECT
  73.     WHEN RIGHT(prev, LENGTH(prev) - POS(' ', TRANSLATE(prev, ' ', '.,;:/_&|@"#''§^ç<>{}°©1234567890[]®', ' '))) = check THEN
  74.       ADDRESS 'YAM' 'WRITEEDITOR "'NEXT word'"'
  75.     WHEN VERIFY(check, '.,;:/_&|@"#''§^ç<>{}°©1234567890[]()®', 'M') ~= 0 THEN
  76.       ADDRESS 'YAM' 'WRITEEDITOR "'NEXT word'"'
  77.   OTHERWISE DO
  78.     IF VERIFY(SUBSTR(check, 2), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'M') = 0 THEN
  79.       ADDRESS 'IRexxSpell' 'QUICKCHECK 'check''
  80.     ELSE ADDRESS 'IRexxSpell' 'QUICKCHECK 'TRANSLATE(check, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')''
  81.     IF result = 'bad' THEN DO
  82.       ADDRESS 'YAM' 'REQUEST "'check' is spelled incorrectly!" "_Continue|_Lookup|_Accept|A_dd|_Stop"'
  83.       SELECT
  84.         WHEN result = 1 THEN ADDRESS 'YAM' 'WRITEEDITOR "'NEXT word'"'
  85.         WHEN result = 2 THEN DO
  86.           ADDRESS 'IRexxSpell' 'CHECK 'check''
  87.           r = result
  88.           r1 = substr(r,1,1)
  89.           r3 = substr(r,3)
  90.           SELECT
  91.             WHEN r1 = '&' THEN
  92.               IF words(r) = 2 THEN DO
  93.                 r3 = SUBSTR(r3, POS(':', r3) + 2)
  94.                 ADDRESS 'YAM' 'REQUEST "Choose a replacement for 'check':" "'r3'|_Cancel"'
  95.                 IF result = 1 THEN DO
  96.                   CALL ReplaceWord(r3)
  97.                  END
  98.                END
  99.               ELSE DO
  100.                 allwords = SUBSTR(r3, POS(':', r3) + 2)
  101.                 x = 0
  102.                 DO UNTIL allwords = ''
  103.                   x = x + 1
  104.                   posi = POS(',', allwords)
  105.                   IF posi ~= 0 THEN DO
  106.                     temp.x = LEFT(allwords, posi - 1)
  107.                     allwords = SUBSTR(allwords, posi + 2)
  108.                    END
  109.                   ELSE DO
  110.                     temp.x = allwords
  111.                     allwords = ''
  112.                    END
  113.                  END
  114.                 nums = x
  115.                 choose = temp.1
  116.                 DO x = 2 TO nums
  117.                   choose = choose||"|"||temp.x
  118.                  END
  119.                 ADDRESS 'YAM' 'REQUEST "Choose a replacement for 'check':" "'choose'|_Cancel"'
  120.                 IF result ~= 0 THEN DO
  121.                   DO x = 1 TO nums
  122.                     IF result = x THEN newword = temp.x
  123.                    END
  124.                   CALL ReplaceWord(newword, LENGTH(check))
  125.                  END
  126.                END
  127.             WHEN r1 = '#' THEN ADDRESS 'YAM' 'REQUEST "Could not find anything for 'check'!" "_Ok"'
  128.             OTHERWISE NOP
  129.           END
  130.           ADDRESS 'YAM' 'WRITEEDITOR "'NEXT word'"'
  131.          END
  132.         WHEN result = 3 THEN DO
  133.           ADDRESS 'IRexxSpell' 'ACCEPT 'TRANSLATE(check, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')''
  134.           ADDRESS 'YAM' 'WRITEEDITOR "'NEXT word'"'
  135.          END
  136.         WHEN result = 4 THEN DO
  137.           ADDRESS 'IRexxSpell' 'ADD 'TRANSLATE(check, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')''
  138.           ADDRESS 'YAM' 'WRITEEDITOR "'NEXT word'"'
  139.          END
  140.         WHEN result = 0 THEN EXIT
  141.       END
  142.      END
  143.     ELSE ADDRESS 'YAM' 'WRITEEDITOR "'NEXT word'"'
  144.    END
  145.   END
  146. END
  147.  
  148. ADDRESS 'YAM' 'REQUEST "End of document reached" "       _Ok       |  _Exit ISpell  "'
  149. SELECT
  150.   WHEN result = 0 THEN ADDRESS 'IRexxSpell' 'EXIT'
  151.   OTHERWISE NOP
  152. END
  153. EXIT
  154.  
  155. ReplaceWord:
  156. newword = ARG(1)
  157. length = ARG(2)
  158. ADDRESS 'YAM' 'WRITEEDITOR "'MARK on'"'
  159. DO count = 1 TO length
  160.   ADDRESS 'YAM' 'WRITEEDITOR "'CURSOR right'"'
  161.  END
  162. ADDRESS 'YAM' 'WRITEEDITOR "'ERASE'"'
  163. ADDRESS 'YAM' 'WRITEEDITOR "'TEXT newword'"'
  164. RETURN
  165.